package constant

// TransformStatus 转换状态枚举，对应Java的TransformStatus枚举
type TransformStatus struct {
	value int16
	name  string
}

// 枚举值定义
var (
	// TransformSuccess 转换成功
	TransformSuccess = TransformStatus{value: 1, name: "TRANSFORM_SUCCESS"}
	// TransformFail 转换失败
	TransformFail = TransformStatus{value: 2, name: "TRANSFORM_FAIL"}
	// RedirectionSuccess 重定向成功
	RedirectionSuccess = TransformStatus{value: 3, name: "REDIRECTION_SUCCESS"}
	// RedirectionFail 重定向失败
	RedirectionFail = TransformStatus{value: 4, name: "REDIRECTION_FAIL"}
)

// Value 返回状态的数值表示，对应Java的getValue()方法
func (ts TransformStatus) Value() int16 {
	return ts.value
}

// Name 返回状态的名称，便于日志和调试
func (ts TransformStatus) Name() string {
	return ts.name
}

// String 实现Stringer接口，便于打印
func (ts TransformStatus) String() string {
	return ts.name
}

// FromValue 根据数值获取对应的TransformStatus
// 相当于Java的valueOf()方法，用于反序列化
func (ts *TransformStatus) FromValue(value int) TransformStatus {
	switch value {
	case 1:
		return TransformSuccess
	case 2:
		return TransformFail
	case 3:
		return RedirectionSuccess
	case 4:
		return RedirectionFail
	default:
		// 可以根据需要返回默认值或 panic
		return TransformFail
	}
}
